#include"module.h"

Module::Module(const int& idmod, const std::string& titre, const int& heureCM, const int& heureTD, const int& heureTP, Enseignant* responsable): idModule_(idmod), titre_(titre), heureCM_(heureCM), heureTD_(heureTD), heureTP_(heureTP), responsable_(responsable)
{
}

int Module::getIdMod() const
{
	return idModule_;
}
std::string Module::getTitre() const
{
	return titre_;
}
int Module::getHTD() const
{
	return heureTD_;
}
int Module::getHCM() const
{
	return heureCM_;
}
int Module::getHTP() const
{
	return heureTP_;
}
Enseignant* Module::getEnsResp() const
{
	return responsable_;
}

void Module::setEnsResp(Enseignant* e)
{
	responsable_ = e;
}
void Module::setHTD(const int& h)
{
	heureTD_ = h;
}
void Module::setHTP(const int& h)
{
	heureCM_ = h;
}
void Module::setHCM(const int& h)
{
	heureTP_ = h;
}

std::ostream& operator<<(std::ostream& os, const Module& mod)
{
	os << "le module " << (mod.getIdMod()) << " à pour titre " << (mod.getTitre()) << " :\n\t à l'enseignant : " << (mod.getEnsResp()->getNom()) << " " << (mod.getEnsResp()->getPrenom()) << " comme responsable.\n\tà " << (mod.getHCM()) << ", " << (mod.getHTD()) << ", " << (mod.getHTP()) << " heures de CM, TD, TP.";
	
	return os;
}

bool Module::operator <(const Module& e) const
{
    return idModule_ < e.idModule_;
}

bool ComparatorModule::operator ()(const Module& e1, const Module& e2)
{
    return e1<e2;
}

EnsembleMod::EnsembleMod()
{
}

void EnsembleMod::ajoutModule(Module *mod)
{
    listModule_.insert(mod);
}

void EnsembleMod::ajoutEnsModule(ensModule eMod)
{
    ensModule::iterator itMod;
    for (itMod = eMod.begin(); itMod!= eMod.end(); ++itMod)
    {
        listModule_.insert((*itMod));
    }
}

ensModule EnsembleMod::getEnsembleMod()
{
    return listModule_;
}

void EnsembleMod::supprModule(Module *mod)
{
    listModule_.erase(listModule_.find(mod));
    delete mod;
}
